Method and system for generating delivery estimates

ABSTRACT

Embodiments of a method and system for determining delivery estimates for shipping a parcel include: retrieving historical delivery data from a plurality of shipping carriers; generating cross-carrier delivery features based on normalizing the historical delivery data; generating a cross-carrier delivery prediction model based on the cross-carrier delivery features; retrieving parcel data for the parcel based on a tracking number S 140;  generating parcel features based on normalizing the parcel data S 150;  determining a delivery estimate for the parcel based on processing the parcel features with the cross-carrier delivery prediction model S 160;  and responding to the delivery estimate S 170.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation-in-part of U.S. patent applicationSer. No. 14/481,078, filed on 9 Sep. 2014, which claims the benefit ofU.S. Provisional Application Ser. No. 61/879,608, filed on 18 Sep. 2013,both of which are incorporated in their entireties by this reference.

This application additionally claims the benefit of U.S. ProvisionalApplication No. 62/340,198, filed on 23 May 2016, which is incorporatedin its entirety by this reference.

TECHNICAL FIELD

This invention relates generally to the shipping services field, andmore specifically to a new and useful method for generating deliveryestimates based on cross-carrier aggregates.

BACKGROUND

The shipping services field is important to people and businesses acrossthe world. Providing efficient delivery services is a challenging taskwith many facets. While the shipping services field has grown andmatured over the years, delivery and shipping inefficiencies still causesubstantial problems for shipping senders, shipping recipients, andshipping carriers alike. In particular, it can be difficult for shippingsenders and/or recipients to accurately estimate transit time (and thusdelivery time) for a given shipment. Thus, there is a need in the fieldof shipping services to create a new and useful method for generatingdelivery predictions based on cross-carrier aggregates. This inventionprovides such a new and useful method.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a chart representation of a variation of an embodiment of amethod;

FIG. 2 is a chart representation of variations of an embodiment of amethod;

FIG. 3 is a schematic representation of delivery estimation for multipleusers in variations of an embodiment of a method;

FIG. 4 is a schematic representation of tracker data structures in avariation of an embodiment of a method; and

FIG. 5 is an example representation of parcel tracking data in avariation of an embodiment of a method.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

The following description of the preferred embodiments of the inventionis not intended to limit the invention to these preferred embodiments,but rather to enable any person skilled in the art to make and use thisinvention.

1. Overview

As shown in FIGS. 1 and 2, an embodiment of a method for predictingtransit time for a parcel associated with a user includes: retrievinghistorical delivery data (e.g., past delivery data) from a plurality ofshipping carriers S110; generating cross-carrier delivery features basedon normalizing (e.g., standardizing) the historical delivery data acrossthe plurality of shipping carriers S120; generating a cross-carrierdelivery prediction model based on the cross-carrier delivery featuresS130; retrieving parcel data for the parcel based on a tracking numberS140; generating parcel features based on normalizing the parcel dataS150; determining a delivery estimate for the parcel based on processingthe parcel features with the cross-carrier delivery prediction modelS160; and responding to the delivery estimate S170, which canadditionally or alternatively include notifying a user with a deliveryprediction notification S172, delivering the parcel based on thedelivery estimate S174, and/or generating an automated system commandS176, and/or any other suitable operations. The method 100 canadditionally or alternatively include generating tracking-related datastructures S180.

The method 100 and/or system 200 function to use parcel data (e.g.,tracking data collected in S140) in combination with historic deliverydata across multiple carriers (e.g., collected in S110) to providedelivery predictions of greater accuracy and/or suitability (e.g.,tailored to user preferences) than those offered to customers by thirdparty shipping carriers and/or those available internally at the thirdparty shipping carriers. The method and/or system 200 can additionallyor alternatively function to provide tracking information with increasedefficiency and/or significant reductions in costs. Additionally oralternatively, the method 100 and/or system 200 can function todetermine delivery estimates for different service levels (e.g., NextDay Air, Ground Transportation, etc.) provided by a shipping carrier, toautomatically select and/or enable a user to select a preferable servicelevel based on the delivery estimates. However, the method 100 caninclude any suitable functionality.

The method 100 is preferably implemented by one or more elements of thesystem 200, but can additionally or alternatively be implemented by ashipping services platform and/or other systems (e.g., shippingautomation system), such as those described in U.S. patent applicationSer. No. 14/481,078, filed 9 SEP 2014, and U.S. patent application Ser.No. 15/429,039, filed 9 FEB 2017, the entireties of which areincorporated by this reference. However, the method 100 can beimplemented by any suitable system.

2. Benefits

The method 100 and system 200 can provide several benefits overtraditional approaches to determining delivery estimate times forshipments. First, the technology can automatically retrieve and/orgenerate multiple types of delivery-related data (e.g., cross-carrierdata such as historical delivery data for completed shipments across aplurality of carriers; parcel-specific data such as weight and selectedservice level; tracking data provided by a shipping carrier; contextualdata such as weather data; etc.) in order to improve upon the accuracyand efficiency of delivery estimation.

Second, the technology can include an approach necessarily rooted incomputer technology for overcoming a problem specifically arising in therealm of computer networks. In an example, the technology canautomatically communicate with digital platforms of a plurality ofshipping carriers (e.g., by generating API requests tailored to eachdifferent platform) to retrieve delivery data and/or parcel data toupdate delivery estimate predictions and/or delivery prediction modelsin real-time, thereby overcoming a technical problem of obtaining andleveraging delivery estimate-related data originating from a pluralityof different digital platforms, shipping carriers, and locations.

Third, the technology can confer improvements to the functioning ofcomputer-related technology. In an example, the technology can amount toan inventive distribution of functionality across a network of one ormore: shipping carriers (e.g., with API and/or other digital platformsfacilitating retrieval of delivery data and/or parcel data), deliveryprediction systems (e.g., acting as a central hub of communication forretrieving delivery-related data from a plurality of sources to use ingenerating and/or executing delivery prediction models), deliveryvehicles (e.g., which can be routed, re-routed, and/or otherwisecontrolled based on improved delivery estimates), users (e.g., shippingsenders, shipping recipients, and/or other users who can leverage an APIof a first part shipping services platform to utilize the deliveryprediction system), and/or other suitable entities. In another example,the technology can apply computer-implemented rules (e.g., featureengineering rules for processing delivery data into an operable form forgenerating features indicative of delivery time; user preference rulesfor determining format of delivery estimates; delivery estimate responserules for appropriately responding to a given delivery estimate; etc.)in conferring improvements to the computer-related technical field ofpredicting delivery estimates. In another example, the technology canimprove the functioning of shipping logistics systems (e.g., freightlogistics, supply chain management systems) by improving upon accuracyand efficiency of predicting delivery estimates, thereby improving theaccuracy of shipping logistics systems in appropriately responding tothe delivery estimates (e.g., a distribution center that is able to moreaccurately schedule redistribution to retailers based on improveddelivery estimates for products being received by the distributioncenter). In another example, the technology can improve automatedcomputing systems that rely on updated delivery information (e.g.,factory inventory systems linked to production), where improved deliveryestimates can lead to lower variance in operational conditions fordecreasing computation time and resources required to allocate deliveredphysical resources.

Fourth, the technology can transform a particular article to anotherstate or thing. For example, the technology can transform one or moreof: a user device (e.g., activating an application executing on a smartphone by pushing a event occurrence to a webhook endpoint integratedwith the application, etc.), a delivery vehicle (e.g., automaticallydelivering a parcel with the delivery vehicle according to a servicelevel selected based on a delivery estimates; routing and/or re-routingthe delivery vehicle based on delivery estimates), automated computingsystems relying on updated delivery estimates (e.g., distribution centersystems, retail systems, etc.), and/or other suitable systems. However,the technology can provide any other suitable benefits in the context ofusing non-generalized systems for determining delivery estimates.

3.1 Method—Retrieving Delivery Data

Block S110 recites: retrieving historical delivery data from a pluralityof shipping carriers. Block S110 functions to collect past datainformative of deliveries administered by shipping carriers (e.g., datalinked generally to delivery of objects, rather than data linkedspecifically to the parcel for delivery predictions are desired).

Regarding Block S110, retrieving delivery data preferably includesretrieving cross-carrier delivery data (e.g., historical deliveryrecords originating and/or associated with a plurality of shippingcarriers, such as both USPS and UPS), but can alternatively includeretrieving delivery data from a single carrier and/or other suitableentity. Delivery data preferably includes any one or more of: addressdata (e.g., origin address, destination address, intermediary addresses,etc.), handling times, transit times (e.g., overall transit time,transit time from a first location to a second location, etc.), deliveryroute data (e.g., indicative of the route traveled by the deliveryvehicle, etc.), status change data (e.g., timestamps associated with astatus change, types of status changes including pre-transit, intransit, out for delivery, available for pickup, delivered, returned tosender, failure, cancelled, error, etc.), carrier-provided deliveryestimates (e.g., delivery scheduled for January 6, etc.), confirmeddelivery data (e.g., in transit on January 4, actual delivery date ofJanuary 7, etc.), service level (e.g., UPS Next Day Air, etc.), and/orany other suitable tracking data, etc.

In examples, address data can include number of successful deliveries toa particular address, additional information about the address (e.g.,instructions for package deliverers), information upon which carriersverify an, and/or any other suitable information related to addresses.In examples, delivery route data can include the probable route taken bydelivery drivers of a particular carrier to deliver items to particularareas or addresses, the times of day that deliveries (or pickups) occur,how long delivery from a shipping center and/or location to a particulararea and/or address takes, typical traffic patterns along a route,real-time traffic data along a route, and/or any other suitableinformation related to delivery routes. In examples, confirmed deliverydata can include confirmed pickup data, actual delivery dates, effect onparcels delivery time from confirmed delivery data regarding otherparcels (e.g., if a shipping carrier maintains data on confirmeddelivery windows or confirmed pickup windows for a particular carrier,the data can be indicative of probable package delivery times forpackages on routes affected by those confirmed delivery windows orpickup windows).

In a specific example, if a scheduled pickup is to occur at a firstaddress between 1:00 PM and 1:15 PM along a known shipping route, thiscan increase the probability that packages will be delivered to nearbyaddresses along the same route around this time. Additionally oralternatively, delivery data can include contextual data (e.g., about anarea such as a origin, destination, and/or intermediate area) such asdemographics of an area (e.g., population, per capita income), weatherdata (e.g., weather during a given day or season, weather patterns,etc.), theft statistics, area traffic patterns, and/or any othercontextual data.

Delivery data can additionally or alternatively include any other datarelevant to shipping, including any one or more of delivery vehicle data(e.g., delivery vehicle types, driver analytics such as driver behavior,delivery vehicle analytics, fleet analytics, delivery vehicle sensordata such as radar sensor data and image datasets from optical sensors,locations of available delivery vehicles, the number of delivery trucksin operation at a given time or summed over a given time interval,etc.), temporal-related data (e.g., the number of packages beingdelivered in a given time interval or other indication of deliveryvolume, changes in delivery data depending on date and/or time, etc.),and/or any other suitable data.

Regarding Block S110, delivery data can be historical, real-time (e.g.,the number of delivery vehicles on the road in a given area lastThursday vs. right now), and/or have any suitable temporal association.Delivery data can be represented with any suitable types of units.Further, the types of delivery data can vary across different shippingcarriers. Delivery data can be public or proprietary (e.g., privateinformation not generally available to the public), where retrievingdelivery data can include authenticating data requests to delivery datasource, such as with a cryptographic key (e.g., API key) or signature.However, delivery data can associated with any suitable permissions.

Block S110 can include receiving and/or querying for delivery data in apush and/or pull framework for data collection. Retrieving delivery datapreferably includes generating and transmitting data requests for eachof the plurality of shipping carriers (e.g., databases of third partyshipping carriers, of first party shipping carriers, etc.). The datarequests are preferably API requests to APIs associated with platformsof the shipping carriers, but can additionally or alternatively be in aform suited for retrieving delivery data and/or other related data fromone or more of: non-shipping carrier platforms (e.g., manufacturerdatabases, distribution center databases, sharing economy platforms suchas ride-sharing platforms, map platforms, etc.), Internet resources(e.g., scraping shipping carrier websites and/or other websites fordelivery data, etc.), and/or any other suitable entity.

In a variation, Block S110 can include transforming a data request basedon carrier-specific rules (e.g., carrier API request rules such as datalimit restriction rules, request format rules, etc.). In an example,Block S110 can include generating a plurality of API requests, each APIrequest tailored to a different carrier from the plurality of carriersbased on a set of carrier API request rules; and receiving updateddelivery data (e.g., to use in generating and updating a cross-carrierdelivery prediction model in Block S130) from the plurality of carriersthrough the API requests. Data requests associated with any number ofusers, trackers, shipping carriers, shipments and/or other entities canbe batched into any number of requests (e.g., a single API request to ashipping carrier for retrieving delivery data across a plurality ofservice levels provided by the shipping carriers). Aggregating requestsfor different types of information can improve computational processingefficiency and/or network functionality such as in a network including adelivery prediction system, a plurality of shipping carriers, and aplurality of users. Additionally or alternatively, data requests can begenerated and/or processed with any suitable computer-implemented rules.

In another variation, Block S110 can include establishing webhooks forautomatically receiving delivery data. A webhook preferably enables anentity (e.g., a first party shipping platform; a user; etc.) to beautomatically updated in response to an event occurrence (e.g., ashipping carrier updating their database with updated delivery data; adelivery prediction system generating an updated delivery estimate;etc.). A webhook preferably includes a webhook origin (e.g., from whichan event occurrence notification is transmitted) and a webhook endpoint(e.g., to which the event occurrence is transmitted), but can includeany suitable framework components. Additionally or alternatively,webhooks (e.g., endpoints, operations for processing data receivedthrough webhooks, etc.) can be established for automatically receivingand/or transmitting parcel data (e.g., in Block S140), and/or any othersuitable data from any suitable entity (e.g., non-shipping carrierplatforms). In an example, Block S110 can include establishing one ormore webhook endpoint Uniform Resource Locators (URLs) for receivingcommunication from one or more carriers; and receiving data (e.g.,delivery data, parcel data, etc.) through one or more Hypertext TransferProtocol (HTTP) POST requests at the one or more webhook endpoint URLsin response to one or more event occurrences (e.g., a first carrierupdating a delivery status change associated with the first trackingnumber). Additionally or alternatively, configuring a webhook can beperformed in any suitable manner.

Block S110 can be performed at predetermined time intervals (e.g.,updating the delivery data on a weekly basis based on sending newqueries to the shipping carriers every week, etc.), in response toand/or concurrently with a trigger event (e.g., the delivery data sourceupdating delivery data; a user requesting a delivery estimate;generating and/or executing a delivery prediction model; predicting adelivery estimate with a low confidence level; receiving a trackingnumber, etc.) and/or at any suitable frequency or time in any suitabletemporal relationship to other portions of the method 100. In avariation, Block S110 is performed at different frequencies fordifferent shipping carriers. For example, Block S110 can includequerying a first shipping carrier at a first time interval (e.g.,weekly) based on data limit requirements (e.g., data amountrestrictions, data type restrictions, etc.) for the first shippingcarrier API; and querying a second shipping carrier at a second timeinterval based on data limit requirements for the second shippingcarrier API. Block S110 can additionally or alternatively be performedin any manner analogous to that described in U.S. patent applicationSer. No. 14/481,078, filed 9 Sep. 2014, and U.S. patent application Ser.No. 15/429,039, filed 9 Feb. 2017, the entireties of which areincorporated by this reference.

In another variation, Block S110 can include retrieving current deliverydata to be used in generating delivery features to be used as inputsinto an already-generated delivery prediction model (e.g., along withparcel features, etc.). For example, the method 100 can include:retrieving parcel data based on a tracking number for a currentdelivery; determining a probable route from the origin address to thedestination address specified in the parcel data; retrieving currentdelivery data (e.g., contextual data) associated with the probableroute; and determining a delivery estimate based on the current deliverydata (e.g., along with the parcel data). As such, Block S110 can beperformed in association with generation and/or execution of a deliveryprediction model. Additionally or alternatively, Block S110 can beperformed at any suitable time and/or in any suitable manner.

3.2 Method—Generating Delivery Features

Block S120 recites: generating cross-carrier delivery features based onnormalizing the historical delivery data across the plurality ofshipping carriers. Block S120 functions to normalize (e.g., standardize,filter, convert, otherwise process, etc.) the delivery data into a formsuitable for use in generating a delivery prediction model (e.g., inBlock S130). Block S120 preferably includes generating cross-carrierdelivery features (e.g., features generated from delivery data spanningacross a plurality of shipping carriers), but can include generating anysuitable delivery features including any one or more of: addressfeatures, delivery route features, contextual features (e.g., weatherfeatures, demographic features, etc.). Delivery features preferablyinclude conditioned delivery data (e.g., normalized delivery data), butcan include raw delivery data (e.g., without post-processing afterretrieval of the delivery data) and/or any other suitable data.

Regarding Block S120, determining delivery features is preferably basedon processing delivery data according to one or morecomputer-implemented rules (e.g., a feature engineering rule, a userpreference rule, etc.), but delivery features can be determined based onany suitable information. Block S120 preferably includes applyingcomputer-implemented rules to process cross-carrier delivery data, butcan additionally or alternatively include applying computer-implementedrules to process delivery data on a parcel-specific basis (e.g.,generating features for packages above certain dimensions in a differentmanner than for packages below certain dimensions, where deliveryfeatures useful for tracking letter size packages may not be useful fortracking oversized and/or heavy packages, etc.), a shippingcarrier-specific basis (e.g., generating features specific to UPS orUSPS, etc.), a service level-specific basis (e.g., selecting a set offeature types tailored to UPS 2nd Day Air deliveries, etc.), auser-specific basis (e.g., selecting a set of feature types tailored todeliveries from a particular company, etc.), and/or on any suitablebasis.

In a variation, Block S120 includes applying a feature engineering ruleto select, filter, and/or otherwise generate features based on deliverydata. In an example, the feature engineering rule can be a unitstandardization rule, which can standardize a given type of deliverydata that can vary in format across shipping carriers (e.g., a firstshipping carrier providing parcel weight in pounds and a second shippingcarrier providing parcel weight in ounces, etc.) for enabling meaningfulcomparisons between the delivery data (e.g., by converting all parcelweight data to ounces). In a specific example, Block S120 can includeapplying the unit standardization rule for converting historiccarrier-provided delivery estimates across a plurality of shippingcarriers (e.g., a first delivery estimate specifying both day and timefrom a first shipping carrier, a second delivery estimate onlyspecifying day from a second shipping carrier) into a standardized unittype (e.g., total estimated number of transit days). In another specificexample, Block S120 can include applying natural language processing toparse descriptions of service levels used in historical deliveries(e.g., converting service level descriptions into a corresponding modeof transportation such as automobile vs. aircraft; into an advertiseddelivery time such as next business day for Next Day Air; etc.). Inanother example, applying the feature engineering rule can includecombining cross-carrier delivery data. In a specific example, Block S120can include processing historical delivery records across shippingcarriers to determine a median time to delivery for packages travelingfrom one location (e.g., a broad region, a zip code, a particularaddress) to another location (e.g., a distribution center). In otherspecific examples, Block S120 can include computing mean times todelivery, variances in time to delivery (e.g., across deliveries, acrossshipping carriers, across service, between carrier-provided deliveryestimates and actual delivery dates, frequency of status changes such aschanges in delivery estimates over the course of the delivery, etc.),and/or other suitable delivery time parameters. However, transformingcross-carrier delivery data into delivery features can be performed inany suitable manner (e.g., analyzing typical drop-off times acrossshipping carriers to generate a probably parcel pickup time feature). Inanother example, applying a feature engineering rule can includeapplying a feature selection rule (e.g., feature selection algorithmssuch as exhaustive, best first, simulated annealing, greedy forward,greedy backward, and/or other suitable feature selection algorithms) tofilter, rank, and/or otherwise select features for use in generating oneor more delivery prediction models (e.g., in Block S130). Choice offeature selection rules can be based on shipping carrier, purpose of thedelivery prediction model (e.g., efficiency, accuracy, and/or othersuitable criteria, which can be determined based on user preferences,etc.), delivery data, and/or any other suitable criteria. However,applying feature engineering rules can be performed in any suitablemanner.

In another variation, Block S120 can include applying a user preferencerule. For example, Block S120 can include generating different sets offeatures for models to be used for different types of users. In aspecific example, Block S120 can include generating a first set offeatures (e.g., including a greater number of feature types selected foroptimizing delivery estimate accuracy) for a first delivery predictionmodel to be used for enterprise users; and generating a second set offeatures (e.g., including a smaller number of feature types selected foroptimizing prediction speed) for a second delivery prediction model tobe used with non-enterprise consumers. However, applying a userpreference rule can be performed in any suitable manner.

Block S120 can be performed at predetermined time intervals, in responseto and/or concurrently with a trigger event (e.g., receiving deliverydata in Block S110, generating a delivery prediction model in BlockS130, etc.), and/or at any suitable frequency or time in any suitabletemporal relationship to other portions of the method 100. In anexample, the trigger event can include reaching a delivery datathreshold (e.g., receiving an amount of data and/or types of dataexceeding a threshold). However, Block S120 can be performed in anysuitable manner.

3.3 Method—Generating a Delivery Prediction Model

Block S130 recites: generating a cross-carrier delivery prediction modelbased on the cross-carrier delivery features. Block S130 functions togenerate and/or store one or more delivery prediction models forpredicting delivery estimates. Generating the delivery prediction modelis preferably based on using delivery features (e.g., generated in BlockS120), but can additionally or alternatively use any other suitablefeatures. For example the method 100 can include: generating parcelfeatures (e.g., in Block S150) based on parcel data (e.g., retrievedthrough a tracking number) for a parcel mid-delivery; and generatingand/or updating a delivery prediction model based on the parcel features(and/or delivery features), where the delivery prediction model canleverage real-time (e.g., mid-delivery) parcel data for generatingand/or adjusting delivery estimates. The delivery prediction modelpreferably outputs a delivery estimate (e.g., delivery day, time, timewindow, amount of time until delivery, etc.), but can additionally oralternatively output delivery-related data including one or more of:confidence levels for the delivery estimate, predictions that the parcelwill be delivered with other parcels, predictions that parcels will beshipped along a particular delivery route, predictions that parcels willbe delivered by a specific delivery vehicle and/or delivery agent,predictions that parcels will encounter particular shipping exceptions,predictions of time spent in various locations such as carrier transitfacilities, and/or any other suitable data.

Regarding Block S130, a delivery prediction model can include any one ormore of: probabilistic properties, heuristic properties, deterministicproperties, and/or any other suitable properties. In a variation, BlockS130 can include assigning one or more weights to delivery features usedin generating a delivery prediction model, where a weight preferablyimpacts the proportion of influence that a corresponding feature willhave in determining a delivery estimate. Weight values are preferablydetermined based on correlation between the corresponding feature anddelivery time, but can additionally or alternatively be determined basedon any suitable criteria. In an example, Block S130 can includeassigning a greater weight to a carrier-provided delivery estimatefeature, and smaller weights to contextual features. However, assigningweights to delivery features for generating delivery prediction modelscan be performed in any suitable manner.

In another variation, Block S130 includes training a delivery predictionmachine learning model. In a specific example, a training sample cancorrespond to a single delivery by a shipping carrier. The trainingsample can include delivery features (e.g., vectorized; generated inBlock S120, etc.) and a corresponding label (e.g., actual delivery timefor the delivery, which can be directly obtained from the raw deliverydata and/or through processing of the raw delivery data such ascalculating the amount of minutes between timestamps for an “Out forDelivery” status change and a “Delivered” status change, etc.). Inexamples, Block S130 and/or other portions of the method 100 can employmachine learning approaches including any one or more of: supervisedlearning (e.g., using logistic regression, using back propagation neuralnetworks, using random forests, decision trees, etc.), unsupervisedlearning (e.g., using an Apriori algorithm, using K-means clustering),semi-supervised learning, reinforcement learning (e.g., using aQ-learning algorithm, using temporal difference learning), and any othersuitable learning style. Additionally or alternatively, Block S130and/or other portions of the method 100 can implement any one or moreof: a regression algorithm (e.g., ordinary least squares, logisticregression, stepwise regression, multivariate adaptive regressionsplines, locally estimated scatterplot smoothing, etc.), aninstance-based method (e.g., k-nearest neighbor, learning vectorquantization, self-organizing map, etc.), a regularization method (e.g.,ridge regression, least absolute shrinkage and selection operator,elastic net, etc.), a decision tree learning method (e.g.,classification and regression tree, iterative dichotomiser 3, C4.5,chi-squared automatic interaction detection, decision stump, randomforest, multivariate adaptive regression splines, gradient boostingmachines, etc.), a Bayesian method (e.g., naive Bayes, averagedone-dependence estimators, Bayesian belief network, etc.), a kernelmethod (e.g., a support vector machine, a radial basis function, alinear discriminate analysis, etc.), a clustering method (e.g., k-meansclustering, expectation maximization, etc.), an associated rule learningalgorithm (e.g., an Apriori algorithm, an Eclat algorithm, etc.), anartificial neural network model (e.g., a Perceptron method, aback-propagation method, a Hopfield network method, a self-organizingmap method, a learning vector quantization method, etc.), a deeplearning algorithm (e.g., a restricted Boltzmann machine, a deep beliefnetwork method, a convolution network method, a stacked auto-encodermethod, etc.), a dimensionality reduction method (e.g., principalcomponent analysis, partial lest squares regression, Sammon mapping,multidimensional scaling, projection pursuit, etc.), an ensemble method(e.g., boosting, boostrapped aggregation, AdaBoost, stackedgeneralization, gradient boosting machine method, random forest method,etc.), and/or any suitable form of machine learning algorithm. In aspecific example, Block S130 can include training a neural networkmodel, where delivery features are used as inputs for the input neurallayer of the neural network model. However, generating a deliveryprediction machine learning model can be performed in any suitablemanner.

In another variation, Block S130 can include generating a decision treemodel with internal nodes and branches selected based on correlationsbetween delivery data and delivery time. In a specific example, adecision tree model can start with a carrier-provided delivery estimate,and subsequently adjust the delivery estimate based on potentialdelivery-related outcomes (e.g., rainy weather vs. sunny weather; heavyvs. light traffic) and corresponding probabilities (e.g., determinedfrom historic weather data; determined from historic traffic data,etc.). However, generating a decision tree model can be performed in anysuitable manner.

In another variation of Block S130, different delivery prediction models(e.g., generated with different algorithms, with different sets offeatures, etc.) can be generated (and/or selected, retrieved, and/orexecuted as in Block S160) based on one or more of: delivery route data(e.g., different models for intra-state versus inter-state deliveries,different models based on exceeding or being below a transit distancethreshold such as 500 miles, etc.), service levels (e.g., First Classvs. Priority), shipping carrier, parcel data (e.g., hazardous vs.non-hazardous objects to be shipped, weight, dimensions, batch vs.non-batch shipment, etc.), type of delivery vehicle (e.g., automobile,railway vehicle, aircraft, watercraft, combination of delivery vehicletypes, autonomous vehicle, manually operated vehicle, etc.), useraspects (e.g., based on user preferences, based on type of user such asenterprise vs. consumer, etc.), and/or any other suitable criteria.However, any suitable number and/or type of delivery prediction modelscan be generated. Regarding Block S130, generating and/or updating oneor more delivery prediction models can be performed at predeterminedtime intervals, in response to and/or concurrently with trigger events(e.g., receiving a threshold amount of delivery data, generatingdelivery features, receiving a user request for a delivery estimate,etc.), and/or at any suitable time and/or frequency. However, generatinga delivery prediction model can be performed in any suitable manner.

3.4 Method—Retrieving Parcel Data

Block S140 recites: retrieving parcel data for a parcel based on atracking number. Block S140 functions to retrieve data concerning aparcel (e.g., a parcel scheduled to be delivered, in mid-delivery, etc.)and/or batch of parcels. The parcel data can be used in generatingdelivery estimates (e.g., in Block S160), such as in light of historicaland/or real-time delivery data (e.g., collected in S110), and/or for anyother suitable purpose (e.g., identifying an appropriate service levelfor shipping the parcel). Block S140 can additionally or alternativelyinclude receiving a tracking number S142.

Regarding Block S140, parcel data preferably includes any dataconcerning the shipping of a particular parcel, such as one or more of:origin address, destination address, parcel size (e.g., dimensions,volume, surface area, etc.), parcel weight (e.g., object weight, overallpackage weight), delivery route data (e.g., current route, otherpotential routes, associated contextual data such as traffic along agiven route), current location (e.g., where a package resides along adelivery route), temporal data (e.g., shipping date, current data,etc.), service level (e.g., Drone Delivery Service vs. Ground), statuschanges (e.g., a list of status descriptions and/or associatedlocations, dates, and times such as “Available to ship; San Francisco,Calif.; March 5; 2:30 pm”), delivery estimates (e.g., estimated deliverydate, estimated delivery time, estimated handling time, etc.), imagedata (e.g., images of the parcel, images of the objects within thepackaging container, etc.), delivery vehicle data (e.g., deliveryvehicle type, driver analytics such as driver behavior for theindividual controlling the delivery vehicle, delivery vehicle sensordata such as image datasets captured from optical sensors of thedelivery vehicle, etc.), identifiers (e.g., originating sender's accountnumber), data types analogous to types of delivery data (e.g., in BlockS110), and/or any other suitable data. An example of parcel data can isshown in FIG. 5, but parcel data can be configured in any suitablemanner.

In relation to Block S140, retrieving parcel data is preferably based onprocessing a tracking number (e.g., received in Block S142) but can bebased on any suitable information (e.g., delivery data, a differentparcel identifier, shipping sender data, shipping recipient data, anon-shipping carrier platform, etc.). The tracking number is preferablyassociated with the shipping carrier that is shipping the parcelreferred to by the tracking number, but can additionally oralternatively be associated with any suitable entity (e.g., a user, aservice level, etc.). The tracking number can include alphanumericcharacters, be unique (e.g., globally unique), non-unique (e.g., where ashipping carrier reuses tracking numbers, where multiple shippingcarriers can use the same tracking number, etc.), secured (e.g.,encrypted, etc.), and/or be any suitable form. A tracking number ispreferably received with a corresponding shipping carrier identifieridentifying the shipping carrier shipping the parcel tracked by thetracking number, but can alternatively be received without an associatedshipping carrier identifier (e.g., when a user transmits a trackingnumber but not an associated shipping carrier identifier through an API;when the tracking number is associated with tracking data from ashipping service platform distinct from the shipping carrier; etc.). Insuch cases, Block S140 can include automatically identifying theshipping carrier associated with a given tracking number, such as byanalyzing and/or processing the tracking number (e.g., determining analphanumeric pattern; pattern matching the alphanumeric pattern topatterns used by different shipping carriers; parsing the trackingnumber for characters indicative of shipping carrier; parsing thetracking number into features and executing a machine learning algorithmwith the features; etc.). In an example, Block S140 can includeautomatically identifying a carrier (e.g., a first carrier, a secondcarrier) as associated with the a tracking number (e.g., a firsttracking number, a second tracking number) based on analyzing thetracking number; and generating an API request (e.g., for parcel data)tailored to the identified carrier in response to automaticallyidentifying the carrier. In another example, Block S140 includestransmitting a plurality of parcel data requests with the trackingnumber to different shipping carriers; and identifying the shippingcarrier based on which shipping carrier responded to the request withparcel data for the tracking number.

Block S140 preferably includes requesting parcel data through a shippingcarrier API and/or other digital platform enabling requests for parceldata, but can additionally or alternatively include requesting forparcel data in any suitable manner. For example, Block S140 can includegenerating and transmitting an API request including a tracking numberto a shipping carrier, and parsing the response by the shipping carrier.In another example, Block S140 can include submitting the trackingnumber via a webform and scraping the resulting website generated aftersubmission of the webform (e.g., the tracking page).

Block S140 can be performed in a predetermined time interval (e.g.,every hour), in response to and/or concurrently with a trigger event(e.g., receiving a user request for a delivery estimate, receiving atracking number, generating a tracking data structure, generation and/orupdating of a delivery prediction model, receiving a notification from ashipping carrier, etc.), and/or at any suitable time and/or frequency.The frequency and/or timing of retrieving parcel data can vary based onshipping carrier rules (e.g., data limit rules) and/or any othersuitable criteria. In a variation, Block S140 can be scheduled inresponse to previously retrieved parcel data (e.g., also in Block S140),where the output of Block S140 (e.g., parcel data) can be used as aninput for determining when to perform Block S140. For example, if BlockS140 collects tracking data suggesting a parcel will be delivered in aweek, Block S140 can be performed only once a day until the expecteddelivery time is within forty-eight hours. Likewise, if Block S140collects data inconsistent with predicted data (e.g., it can bepredicted that a parcel passes through a particular distribution centerat a particular time, but the actual tracking data shows the parcelpassing through a different distribution center), this can result inmodification of when and how data requests are performed via Block S140,where data retrieved at different times from the data requests cansubsequently be processed (e.g., into delivery features) and used forgenerating updated delivery prediction models and/or executing adelivery prediction model with new inputs. In a specific example, BlockS140 can include: querying shipping carriers for parcel data accordingto a default query schedule; receiving unexpected parcel data (e.g.,frequent changes in delivery estimates; arrival at an unexpecteddistribution center; current location differing from expected locationbeyond a distance threshold; contextual data such as weather data and/ortraffic data causing re-routing of the delivery vehicle; etc.); andmodifying the query schedule based on the unexpected parcel data (e.g.,increasing frequency of performing Block S140 for retrieving parceldata, in order to more frequently gather parcel data for identifying andresolving tracking issues, etc.). In another variation, Block S140 canbe performed based on delivery data (e.g., received in Block no). Forexample, a disruption to a shipping carrier can be detected viaprocessing of delivery data received in S110; and Block S140 can includequerying shipping carriers with tracking numbers to determine if thedisruption has been reflected in changes to current parcel datapresented by the shipping carriers. However, Block S140 can be performedwith any suitable relation to other portions of the method 100. Inanother variation, Block S140 can include receiving parcel data at awebhook endpoint established with a shipping carrier (e.g., in responseto an event occurrence such as a status change and/or other update intracking data), but Block S140 can use webhooks in any suitable manner.However, Block S140 can be performed in any suitable manner.

Block S140 can additionally or alternatively include receiving atracking number S142. Block S142 functions to receive a tracking numberand/or other identifier for a parcel and/or batch of parcels. Thetracking number is preferably generated by a shipping carrier, but canadditionally or alternatively be generated by a shipping servicesplatform. For example, a user of a shipping services platform can beprovided with a proprietary tracking number used by the shippingservices platform (e.g., distinct from the tracking number or numbergenerated by shipping carriers). Additionally or alternatively, theshipping services platform and shipping carrier(s) can cooperativelygenerate a tracking number (e.g., linked to information in both theshipping services platform and at the shipping carrier). Block S142 canadditionally or alternatively include receiving any user-submitted(e.g., as opposed to carrier-derived) information about a parcel and/orabout shipping information related to a parcel. Block S142 preferablyincludes receiving the tracking number via an application programminginterface (API) from a user (e.g., shipping sender, shipping recipient,etc.), shipping carrier, and/or any other suitable entity. The API ispreferably implemented using RESTful JSON but can alternatively beimplemented in any other suitable manner. Additionally or alternatively,Block S142 can include receiving the tracking number through a textsubmission from a website or native application; through an image of ashipping label and scanning the label (e.g., label text, label barcode,label images) to identify a tracking number (e.g., via a barcodescanning application, via OCR); and/or through any suitable means.However, receiving a tracking number S142 can be performed in anysuitable manner.

3.5 Method—Generating Parcel Features

Block S150 recites: generating parcel features based on normalizing theparcel data. Block S150 functions to normalize (e.g., standardize,filter, convert, otherwise process, etc.) the parcel data into a formsuitable for input into a delivery prediction model to generate adelivery estimate (e.g., in Block S160). Parcel features preferablyinclude conditioned parcel data (e.g., standardized parcel weight;carrier-provided delivery estimate converted into a standardized formused by a shipping services platform across a plurality of shippingcarriers, etc.), but can additionally or alternatively include rawparcel data, parcel feature types analogous to types of deliveryfeatures (e.g., in Block S120), and/or any other suitable data. Parcelfeatures preferably share at least a portion of feature types with thedelivery features (e.g., generated in Block S120) used in generating adelivery prediction model, but can alternatively encompass feature typesdistinct from those typified by the delivery features.

Regarding Block S150, determining parcel features is preferably based onprocessing parcel data for one or more parcels according to acomputer-implemented rule (e.g., a feature engineering rule, a userpreference rule, etc.), but parcel features can be determined based onany suitable information. Computer-implemented rules applied inaccordance with Block S120 are preferably the same computer-implementedrules applied in accordance with Block S150, such that Block S150 caninclude applying computer-implemented rules to determine parcel featuresin a manner analogous to applying the computer-implemented rules todetermine delivery features. Meaningful comparisons between historicaland current data (e.g., delivery data, parcel data, etc.) can be enabledby consistently applying the same computer-implemented rules todetermining the delivery features used in generating the deliveryprediction model, and to determining the parcel features used as inputinto the delivery prediction model. For example, the method 100 caninclude applying a feature engineering rule (e.g. a unit standardizationrule) for converting origin and destination addresses for bothhistorical deliveries (e.g., as specified in delivery data retrieved inBlock S110) and current deliveries (e.g., specified by parcel dataretrieved based on a tracking number in Block S150) into GPScoordinates, thereby standardizing the different formats used bydifferent shipping carriers in describing origin and destinationaddresses. In another example, the method 100 can include applying thesame feature engineering rule to convert historic carrier-provideddelivery estimates and a parcel-specific carrier-provided deliveryestimate into a shared unit type (e.g., number of minutes).Alternatively, Block S150 can include applying computer-implementedrules in a different manner (e.g., applying the samecomputer-implemented rules in different ways, applying differentcomputer-implemented rules, etc.) than in Block S120. For example, ifhistorical cross-carrier delivery data retrieved in Block S110 includesmore types of data (e.g., address data, carrier-provided deliveryestimates, and contextual data) than delivery-specific parcel data(e.g., address data and a carrier-provided delivery estimate, but nocontextual data) retrieved in Block S140, different feature engineeringrules can be applied to determine a larger feature set (e.g., from thehistorical cross-carrier delivery data) for generating the learningprediction model than for executing the delivery prediction model (e.g.,with parcel features generated from the delivery-specific parceldataset). In specific examples, privileged information machine learningmodels (e.g., SVM+, etc.) can be used in training delivery predictionmodels by leveraging additional types of information supplied by thehistorical delivery data than by parcel data (e.g., in situations whereparcel data is associated with a shipping carrier providing fewer typesof data than other shipping carriers, and historical delivery data fromthe other shipping carriers is used in generating a delivery predictionmodel). In another example, feature engineering rules applied toprocessing historical delivery data from a set of shipping carriers candiffer from a feature engineering rule used in processing parcel dataprovided by a shipping carrier different from the set of shippingcarriers (e.g., when using cross-carrier historical delivery data topredict a delivery estimate for a parcel shipped by a shipping carrierfor which historical delivery data is unavailable). In another example,a feature engineering rule applied to process historical delivery datafrom a shipping carrier can be different from a feature engineering ruleapplied to process parcel data from the same shipping carrier (e.g.,when the raw delivery data differs in format and/or data types than theparcel data; when the shipping carrier platform has updated the formatfor data stored by the shipping carrier platform; etc.). However,applying computer-implemented rules in relation to Block S150 can beperformed in any suitable manner.

Block S150 is preferably performed in response to receiving parcel data(e.g., a threshold amount of parcel data; a threshold amount of parceldata types; updated parcel data received at a webhook endpoint; etc.) inBlock S140, but can be performed in response to and/or concurrently withanother trigger event (e.g., determining delivery features as in BlockS120, etc.), at predetermined time intervals, and/or with any suitabletemporal relationship to other portions of the method 100. For example,Block S150 can be performed each time a parcel data request (e.g.,including a tracking number) is fulfilled (e.g., by a shipping carrier).Block S150 is preferably not repeated when the parcel data retrieved inBlock S150 matches parcel data previously retrieved for the parcel(e.g., when there was no update in tracking data), but can repeated forany suitable purpose. However, Block S150 can be performed at anysuitable time at any suitable frequency, and/or in any suitable manner.

3.6 Method—Determining a Delivery Estimate

Block S160 recites: determining a delivery estimate for the parcel basedon processing the parcel features with the cross-carrier deliveryprediction model. Block S160 functions to determine a delivery estimatefor one or more parcels scheduled to be delivered or in the process ofbeing delivered. Delivery estimates can include any one or more of:temporal parameters (e.g., delivery day, time, time window, amount oftime until delivery, etc.), delivery-related data (e.g., confidencelevels, type of parcels being delivered, probable parcel pick-up times,tracking status changes, mode of transportation, location of deliveryvehicle, delivery vehicle analytics such as driver behavior, etc.)and/or any other suitable data. Determining a delivery estimatepreferably is based on executing one or more delivery prediction models(e.g., generated in Block S130), but can additionally or alternativelybe based on any suitable models and/or approaches. In an example,determining a delivery estimate can include applying an ensembleapproach for using a plurality of delivery prediction models (e.g.,predicting a plurality of delivery estimates with a plurality ofdelivery prediction models, and using the plurality of deliveryestimates to predict a final delivery estimate with a final deliveryprediction model, etc.). In another example, determining a deliveryestimate can include predicting current contextual data with acontextual data prediction model, and using the predicted contextualdata as features for a delivery prediction model. However, any suitablemodels can be combined and/or otherwise used to determine a deliveryestimate.

In a variation, as shown in FIG. 3, Block S160 can include determining aseries (e.g., over time) of delivery estimates for a given parcel with adelivery prediction model. The series of delivery estimates can bedetermined with a delivery prediction model using a static set ofdelivery data and/or parcel data, with a delivery prediction model thatis updated during the timeline of delivery with updated delivery dataand/or updated parcel data (e.g., in response to sending delivery datarequests and/or parcel data requests to shipping carriers duringdelivery), and/or with a delivery prediction model using any suitabledata. In an example, Block S160 can include, during a delivery of asecond parcel associated with a second user: determining an actualdelivery time for a first parcel in response to completed delivery ofthe first parcel; updating a cross-carrier prediction model based on theactual delivery time; and determining a second delivery estimate for thesecond parcel (e.g., where the first deliver estimate was determinedprior to the completed delivery of the first parcel) based on theupdated cross-carrier delivery prediction model. In another example, themethod 100 can include: determining a starting delivery estimate at thebeginning of a delivery timeline for a parcel; detecting a deliverydisruption trigger event (e.g., upon retrieving updated delivery data inBlock S110; upon retrieving updated parcel data in Block S140;re-routing of the delivery vehicle; severe weather conditions; arrivalof the parcel at a delivery checkpoint at a time different from anexpected time beyond a threshold; unexpected traffic conditions;delivery vehicle technical difficulties; unexpectedly high amount ofdelivery volume generally, for specific locations, for specific shippingcarriers, and/or along any suitable vector, which can lead to deliverydelays; etc.); and in response to detecting a delivery disruptiontrigger event, determining an updated delivery estimate (e.g., using newinputs such as updated delivery data and/or parcel data with thedelivery prediction model used for determining the starting deliveryestimate; with an updated delivery prediction model; etc.). Detecting adelivery disruption trigger event and/or determining an updated deliveryestimate for a first parcel can trigger delivery estimate updates forone or more other parcels. For example, delivery disruption triggerevents pertinent to one parcel will likely have a disruptive effect onother related parcels (e.g., related with respect to delivery route datasuch as origin and/or destination addresses; with respect to sharing thesame delivery vehicle; with respect to close location proximity at thetime of the disruption; etc.). In a specific example, the method 100 caninclude determining an updated delivery estimate for a first parcel inresponse to detecting a delivery disruption trigger event (e.g.,technical difficulties with a shipping carrier's fleet of a type ofdelivery vehicle; etc.) identifying a set of related parcels satisfyinga relatedness condition (e.g., being shipped with a service level usingthe type of delivery vehicle); and determining updated deliveryestimates for the set of related parcels. However, determining a seriesof delivery estimates can be performed in any suitable manner.

In another variation of Block S160, different types of deliveryprediction models (e.g., generated in Block S130) can be used indetermining one or more delivery estimates for one or more parcels. Forexample, the method 100 can include: retrieving, from a second carrierof a plurality of carriers, second parcel data for a second parcel basedon a second tracking number associated with the second carrier;retrieving a second cross-carrier delivery prediction model based on thesecond parcel data, the second cross-carrier delivery prediction modelusing different cross-carrier delivery features than a firstcross-carrier delivery prediction model used for a first parcel; anddetermining a second delivery estimate for the second parcel based onthe second parcel data and the second cross-carrier delivery predictionmodel. In this variation, Block S160 can include selecting a deliveryprediction model (e.g., from a set of generated delivery predictionmodels) to be used for determining a delivery estimate, such as basedupon one or more of: delivery vehicle data (e.g. selecting a deliveryprediction model generated from aircraft delivery vehicle-relatedfeatures to predict a delivery estimate for a parcel being delivered byaircraft, etc.), location data (e.g., selecting delivery predictionmodels tailored to delivery routes between two particular countries,etc.), user data (e.g., selecting a delivery prediction model optimizedfor accuracy based on user preferences, etc.), criteria derived fromdelivery data and/or parcel data, and/or any other suitable criteria. Inan example, Block S160 can include selecting a first cross-carrierdelivery prediction model from a set of delivery prediction models basedon a first destination address from first parcel data for a firstparcel, and selecting a second cross-carrier delivery prediction modelfrom the set of delivery prediction models based on a second destinationaddress from second parcel data for a second parcel. In another example,as shown in FIG. 3, Block S160 can include switching, during thetimeline of parcel delivery for a parcel, delivery prediction modelssuch as based on criteria used in selecting a delivery prediction model.In a specific example, Block S160 can include for an inter-countrydelivery: determining a first delivery estimate with a first deliveryprediction model in response to receiving parcel data specifying aparcel location in a first country; and determining a second deliveryestimate with a second delivery prediction model in response toreceiving updated parcel data specifying an updated parcel location in asecond country. However, determining delivery estimates with differentdelivery prediction models can be performed in any suitable manner.

Block S160 is preferably performed in response to generating parcelfeatures in Block S150, but can be performed in response to and/orconcurrently with another trigger event (e.g., updating of a deliveryprediction model, as shown in FIG. 3; receiving updated delivery data,as shown in FIG. 3; receiving a user request for a delivery estimate;receiving a tracking number in Block S142; receiving updated parcel datafrom a shipping carrier, such as at a webhook endpoint; etc.), atpredetermined time intervals (e.g., daily), and/or with any suitabletemporal relationship in relation to the method 100. In a variation,determining delivery estimates can be performed at a varying frequencybased on the stage of delivery (e.g., predicting a delivery estimateonce a day leading to the predicted date of delivery, and predictingdelivery estimates every hour on the predicted date of delivery).Additionally or alternatively, the frequency of determining deliveryestimates can be varied based on one or more of: a shippingcarrier-specific basis (e.g. varying frequency of delivery estimationfor different shipping carriers with patterns of updating parcel datafor different shipping carriers), user-specific basis (e.g., greaterfrequency for enterprise users), service level-specific (e.g., greaterfrequency for Next Day Air service levels), location-specific (e.g.,less frequency for interstate deliveries, for destination addresseswithin a particular zip code, etc.), and/or on any suitable basis.However, Block S160 can be performed at any suitable time at anysuitable frequency with any suitable delivery prediction models.

Block S160 can additionally or alternatively include retrieving adelivery prediction model. Delivery prediction models and/or modelidentifiers can be stored in association with any suitable identifier(e.g., user identifiers identifying users for which a particulardelivery prediction model is selected; location identifiers identifyinglocations for which a delivery prediction model is tailored; etc.)and/or any other suitable data. Block S160 can additionally oralternatively include generating confidence levels for the deliveryestimates using any suitable algorithm. Generated confidence levels canbe presented to and/or processed by a user, and/or used to inform timingand/or frequency of data retrieval (e.g., delivery data retrieval inBlock S110, parcel data retrieval in Block S140, etc.), and/or for anyother suitable purpose. For example, the method 100 can include: inresponse to generating a delivery estimate confidence level below aconfidence level threshold, retrieving updated delivery data (e.g., inBlock S110), updating the delivery prediction model with the updateddelivery data; and generating an updated delivery estimate andconfidence level (e.g., where these steps can be repeated until theconfidence level threshold is exceeded). However, generating confidencelevels can be performed in any suitable manner.

Block S160 can additionally or alternatively include ranking, selecting,and/or otherwise analyzing service levels (e.g., to be used fordelivering the parcel in Block S174), such as based on: deliveryestimate times (e.g., prioritizing service levels with fastest deliverytime), other service level-related data (e.g., rate quotes, probabilityof successful delivery, associated shipping carrier, etc.), userpreferences (e.g., filtering for service levels associated with a subsetof shipping carriers, and ranking the filtered service levels based ondelivery estimate times, etc.) and/or any other suitable criteria.Additionally or alternatively, selecting a service level can beperformed in any manner analogous to that described in U.S. patentapplication Ser. No. 14/481,078, filed 9 Sep. 2014, and U.S. patentapplication Ser. No. 15/429,039, filed 9 Feb. 2017, the entireties ofwhich are incorporated by this reference. Further, selecting a servicelevel can be performed in any suitable manner. However, determining oneor more delivery estimates S160 can be performed in any suitable manner.

3.7 Method—Responding to the delivery estimate.

Block S170 recites: responding to the delivery estimate. Block S170functions to act on delivery predictions and/or enable a user and/orother third party to act on delivery predictions (e.g., in a mannersuited to increasing efficiency for one or more of a shipping sender, ashipping receiver, and a shipping carrier). Block S110 can additionallyor alternatively include: notifying a user with a delivery predictionnotification S172; delivering the parcel based on a delivery estimateS174, generating an automated system command S176, and/or other suitableoperations. Block S110 is preferably performed in response todetermining a delivery estimate (e.g., in Block S160), but can beperformed at any suitable time and/or frequency.

Block S170 can additionally or alternatively include notifying a userwith a delivery prediction notification S172, which functions to notifyone or more interested entities (e.g., a user associated with theparcel, such as a shipping sender, shipping recipient, shipping carrier,etc.). The delivery prediction notification preferably includes one ormore delivery estimates for a parcel associated with the user recipientof the notification, but can additionally or alternatively includedelivery data, delivery features, parcel data, parcel features, and/orany other suitable information. For example, Block S172 can includegenerating notifications that a parcel has not been delivered, as shownby a carrier tracking status. Delivery prediction notifications arepreferably generated, transmitted, and provided to the intendedrecipient in substantially real-time, enabling rapid response to updateddelivery predictions. Communication channels used in receiving and/ortransmitting delivery prediction notifications preferably include a pushnotification service provided via the mobile electronic device (e.g., anative application operating on a shipping recipient smartphone), butcan additionally or alternatively include: a short message system (SMS)network, email, instant message, an in-app notification system, webbased websocket or publication-subscription channels, image basedtransmission of transaction information such as through QR-codescaptured by a camera, and/or any other suitable communication channel.

In a variation, Block S172 can include transmitting a deliveryprediction notification (e.g., an event occurrence indicating a changeassociated with delivery estimation, such as the determination of anupdated delivery estimate) to activate an application (e.g., a thirdparty web application, a third party mobile application, etc.) and/orother suitable component (e.g., user device) associated with a user. Anynumber of delivery prediction notifications (e.g., event occurrences)can be transmitted to any number of applications associated with anynumber of users. Activating one or more applications preferably includescausing the application to process the delivery prediction notification(e.g., analyze a delivery estimate provided by the delivery predictionnotification) and respond accordingly (e.g., integrate the deliveryestimate into a shipping logistics system). In this variation, BlockS172 can include enabling a user to establish webhook endpoints to whichdelivery prediction notifications (e.g., event occurrences) can beautomatically transmitted in response to a trigger event. Webhookendpoints are preferably webhook endpoint URLs, and delivery predictionnotifications to the webhook endpoints are preferably HTTP POSTrequests, but webhook endpoints and associated delivery predictionnotifications can typify any suitable format. In an example, the method100 can include leveraging webhooks to automate delivery predictionnotification in real-time (e.g., immediately in response to a shippingcarrier updating parcel data for a tracking number). In a specificexample, the method 100 can include receiving, at a shipping servicesplatform webhook endpoint, updated parcel data in response to a shippingcarrier updating the tracking data for the parcel; determining adelivery estimate in response to receiving the updated parcel data; andtransmitting an event occurrence (e.g., including the delivery estimate)to a user-established webhook endpoint (e.g., to activate an applicationassociated with the user). In another specific example, the method 100can include: receiving a webhook endpoint address from a user;associating the webhook endpoint address with a user identifieridentifying the user, and automatically pushing a first event occurrence(e.g., including a first delivery estimate) to the webhook endpointaddress for processing by the first application. In this specificexample, the method 100 can further include: determining a seconddelivery estimate (e.g., based on processing updated parcel features forthe parcel) with the cross-carrier delivery prediction model; andautomatically pushing a second event occurrence to the webhook endpointaddress in response to the second delivery estimate differing from thefirst delivery estimate beyond a delivery estimate threshold. However,transmitting a delivery prediction notification to activate anapplication can be performed in any suitable manner.

Block S172 preferably includes transmitting the delivery predictionnotification to a user, but can additionally or alliteratively betransmitted to any suitable party. For example, Block S172 can includesending a notification to a neighbor that a package has arrived if theshipping recipient is not home (e.g., or in response to a request orindication from the shipping recipient to do so). Block S172 ispreferably performed in response to a delivery estimate request (e.g.,received via a shipping services platform API, where the deliveryprediction notification is transmitted in response through the shippingservices platform API; received through a web application; receivedthrough e-mail; etc.), but can additionally be performed at any timesuitable time at any suitable frequency. In a variation, notificationparameters of Block S172 (e.g., frequency of notification, etc.) can bemediated by confidence levels generated in Block S160. For example,Block S172 can provide delivery prediction notifications in response toassociated delivery estimates having confidence levels exceeding athreshold confidence level. In another variation, notificationparameters can be mediated by differences between past and currentdelivery estimates for a given parcel. For example, if predicteddelivery estimate time changes by five minutes, generation of a newdelivery prediction notification can be omitted, but a differencebetween a previous and a current delivery estimate exceeding a thresholdcan trigger Block S172. In another variation, notification parameterscan be mediated by time differences between predicted delivery estimatesand a current time. For example, updates to the delivery estimate on theday of delivery can be more crucial than updates to the deliveryestimates several days before delivery. Changes in delivery estimatesand time-left-to-delivery can additionally or alternatively be combined(e.g., new notifications can be generated only if the shift in deliveryestimates is greater than five percent of the time remaining beforepredicted delivery). However, notifying a user S172 can be performed inany suitable manner.

Block S170 can additionally or alternatively include delivering theparcel based on one or more delivery estimates S174, which functionsfacilitate and/or improve delivery of the parcel by leveraging predicteddelivery estimates (e.g., in Block S160). Delivering a parcel ispreferably according to a service level determined in Block S160 basedon one or more predicted delivery estimates for the service levels. Forexample, the method 100 can include: generating service level features(e.g., mode of transportation, described delivery estimate time such asNext Day or 2nd Day, rate quote, weight requirements, dimensionsrequirements, object type requirements, etc.) for service levels (e.g.,provided by a first party shipping carrier, which can be associated witha shipping services platform); determining a plurality of deliveryestimates for the service levels based on processing one or moredelivery prediction models with the service level features (e.g., alongwith parcel features for the parcel being delivered); and delivering theparcel according to a service level selected from the service levels(e.g., in Block S160) based on the plurality of delivery estimates.

Regarding Block S174, the one or more parcels are preferably deliveredwith a delivery vehicle specified in relation to the system 200, but canadditionally or alternatively be delivered by any suitable component. Inan example, the method 100 can include generating (e.g., at a remotedelivery prediction system) control instructions for a delivery drone(e.g., in Block S176) in response to selection of the drone deliveryservice from the service levels (e.g., based on corresponding deliveryestimates); and controlling the delivery drone to deliver the parcelbased on the control instructions. In this example, for generating thedelivery prediction model used in determining the delivery estimates,the method 100 can include: retrieving historical delivery dataincluding drone delivery data for historical completed drone deliveriescompleted by a plurality of third party shipping carriers; generatingcross-carrier delivery features including drone delivery featuresgenerated based on combining the drone delivery data; and generating thedelivery prediction model based on the drone delivery features. In avariation, delivering the parcel can include rerouting delivery of theparcel based on one or more delivery estimates. For example, Block S174can include: re-querying a plurality of third party shipping carriersfor updated delivery data; determining an updated delivery estimate forthe service level (e.g., used to delivery the parcel) based on theupdated delivery data; and rerouting delivery of the parcel based on theupdated delivery estimate. Block S174 is preferably performed inresponse to selecting a service level based on a delivery estimate, butcan be performed in response to and/or concurrently with another triggerevent (e.g., determining a batch of parcels to ship together; receivingpayment for a service level from a user such as through the API; etc.),at a predetermined time interval, and/or at any suitable time at anysuitable frequency. However, delivering the parcel S174 can be performedin any suitable manner.

Block S110 can additionally or alternatively include generating anautomated system command S176, which functions to generate controlinstructions for commanding autonomous systems (e.g., associated withand/or dependent directly or indirectly on parcel delivery and deliveryestimates) to perform one or more actions in response to a predicteddelivery estimate. In an example, Block S176 can include generatingcontrol instructions for an autonomous delivery vehicle (e.g.,autonomous automobile, autonomous delivery drone), such as in responseto selecting a service level for delivering the parcel based on adelivery estimate. In another example, Block S176 can includeautomatically unlocking an automated entry gate, turning on exteriorlights, etc. prior to a predicted delivery estimate. In another example,Block S176 can include activating refrigerators some time before arrivalof a refrigerated shipment (which can enable a refrigerator to not needto be run constantly, reducing energy usage). However, Block S176 can beperformed in any suitable manner.

3.8 Method—Generating tracking-related data structures.

As shown in FIGS. 2 and 4, the method 100 can additionally oralternatively include generating tracking-related data structures S180,which functions to generate data structures for use in processingsystem-based delivery prediction system, in an API, and/or othersuitable interface for predicting delivery estimates and/or performingother suitable portions of the method 100. Tracking-related datastructures can include any one or more of: tracker data structures(e.g., tracker object data structures specifying delivery estimates andassociated data for a parcel, etc.), parcel data structures (e.g.,representing one or more parcels to be shipped), shipment datastructures (e.g., representing a shipment operation), user preferences,computer-implemented rules, delivery data, delivery features, parceldata, parcel features, identifiers identifying one or more tangibleentities (e.g., parcels, users, user devices, delivery vehicles, etc.)or intangible entities (e.g., trackers, shipments, delivery data, parceldata etc.), and/or any other suitable data structure.

Regarding Block S180, as shown in FIG. 4, any number of tracker-relateddata structures can be generated, used, and/or otherwise manipulated.For example, different tracker data structures can be generated fortracking parcels delivered across a plurality of shipping carriers(e.g., and associated service levels), where computer-implemented rulesfor generating, formatting, and/or using a tracker data structure typecan be consistent or different across different shipping carriers. Inanother example, as shown in FIG. 4, the method 100 can enable a user toretrieve delivery estimates for a plurality of parcels being deliveredby a plurality of shipping carriers. In a specific example, the method100 can include generating a first and a second tracker data structure,each including a unique identifier and parcel features (e.g., generatedbased on respective parcel data), where the first and the second trackerdata structures are associated with parcels being delivered by differentshipping carriers; and in response to receiving a request from the userfor tracking data associated with the first and the second parcels,retrieving the first and the second tracker data structures based on thefirst unique identifier and the second unique identifier (e.g., in orderto retrieve delivery estimates for the parcels to present to the user).In another example, tracker-related data structures can be used inbatching data requests (e.g., delivery data requests, parcel datarequests, etc.) and/or other suitable requests into a single combinedrequest and/or other suitable form for improving efficiency of dataretrieval. In a specific example, the method 100 can include: receivinga first tracking number provided by a first shipping carrier (e.g., fora first parcel associated with a first user); receiving a secondtracking number provided by the first shipping carrier (e.g., for asecond parcel associated with a second user); and batching the first andthe second non unique-tracking numbers into a parcel data API requesttailored to the shipping carrier.

Block S180 is preferably performed in response to and/or concurrentlywith trigger events (e.g., receiving parcel data; receiving deliverydata; receiving a tracking number; etc.), but can additionally oralternatively be performed at predetermined time intervals, and/or atany suitable time and/or frequency. In a variation, Block S180 caninclude generating a tracker data structure in response to receiving atracking number (e.g., from a user through an API). Generating thetracker data structure preferably includes a generating a unique trackeridentifier for the tracking number (e.g., which can be non-unique acrossshipping carriers), but can include generating any suitable informationfor the tracker data structure. In an example, the method 100 caninclude: in response to generating the parcel features, automaticallygenerating a tracker data structure including a unique trackeridentifier and the parcel features; and determining a delivery estimatebased on retrieving the parcel features from the tracker data structure.In another variation, Block S180 can include updating tracker datastructures (e.g., appending updated parcel data to a tracker datastructure). In an example, the method 100 can include: retrievingupdated parcel data for the parcel based on the non-unique trackingnumber; generating updated parcel features for the parcel based on theupdated parcel data; updating the tracker data structure with theupdated parcel features; and determining a second delivery estimate forthe parcel based on processing past parcel features (e.g., used indetermining a first delivery estimate) and the updated parcel featureswith the cross-carrier delivery prediction model, where determining thesecond delivery estimate includes retrieving the past parcel featuresand the updated parcel features from the tracker data structure.However, Block S180 can be performed in any suitable manner.

Any portions of the method 100 can be performed in serial (e.g., inresponse to, etc.), parallel (e.g., concurrently on different threadsfor parallel computing to improve system processing for determiningdelivery estimates, etc.), and/or with any suitable temporalrelationship. However, the method 100 and/or portions of the method 100can be performed in any suitable manner.

4. System

The system 200 preferably includes a delivery prediction system operableto determine delivery estimates for one or more parcels. Additionally oralternatively, the system 200 can include one or more of a: deliveryvehicle, object dimensions measurer, object weight measurer, labelprinter system, and/or any other suitable component. The method 100and/or portions of the method 100 are preferably implemented by thedelivery prediction system (e.g., a remote computing system operated bya shipping services platform, which can also function as a first partyshipping carrier, etc.), but can additionally or alternatively beimplemented by one or more: of remote computing systems (e.g., a server,at least one networked computing system, stateless, stateful), localcomputing systems, shipping carriers (e.g., shipping carrier platforms),non-shipping carrier platforms, user devices, databases (e.g., deliverydata databases, parcel data databases, etc.), and/or by any suitablecomponent. Communication by and/or between any components of the systemcan include wireless communication (e.g., WiFi, Bluetooth,radiofrequency, etc.) and/or wired communication. In variations, thesystem 200 can include any suitable components and/or perform anysuitable functionality analogous to that described in U.S. patentapplication Ser. No. 14/481,078, filed 9 Sep. 2014, and U.S. patentapplication Ser. No. 15/429,039, filed 9 Feb. 2017, the entireties ofwhich are incorporated by this reference. However, the system 200 and/orother components of the system 200 can be configured in any suitablemanner.

An alternative embodiment preferably implements the above methods in acomputer-readable medium storing computer-readable instructions. Theinstructions are preferably executed by computer-executable componentspreferably integrated with a shipping services platform. Thecomputer-readable medium may be stored on any suitable computer readablemedia such as RAMs, ROMs, flash memory, EEPROMs, optical devices (CD orDVD), hard drives, floppy drives, or any suitable device. Thecomputer-executable component is preferably a processor but theinstructions may alternatively or additionally be executed by anysuitable dedicated hardware device.

The embodiments include every combination and permutation of the varioussystem components and the various method processes, including anyvariations, examples, and specific examples.

As a person skilled in the art will recognize from the previous detaileddescription and from the figures and claims, modifications and changescan be made to the preferred embodiments of the invention withoutdeparting from the scope of this invention defined in the followingclaims.

We claim:
 1. A method for predicting transit time for a first parcelassociated with a first user, the method comprising: retrieving pastdelivery data from a plurality of carriers; generating cross-carrierdelivery features based on normalizing the past delivery data across theplurality of carriers according to a feature engineering rule;generating a first cross-carrier delivery prediction model based on thecross-carrier delivery features; retrieving, from a first carrier of theplurality of carriers, first parcel data for the first parcel based on afirst tracking number associated with the first carrier; generatingparcel features based on normalizing the first parcel data according tothe feature engineering rule; determining a first delivery estimate forthe first parcel based on processing the parcel features with the firstcross-carrier delivery prediction model; and in response to determiningthe first delivery estimate, automatically pushing a first eventoccurrence to activate a first application associated with the firstuser.
 2. The method of claim 1, further comprising: generating aplurality of API requests, each API request tailored to a differentcarrier from the plurality of carriers based on a set of carrier APIrequest rules; receiving updated delivery data from the plurality ofcarriers through the API requests; and generating an updatedcross-carrier delivery prediction model based on the updated deliverydata.
 3. The method of claim 2, further comprising: during a delivery ofa second parcel associated with a second user: determining an actualdelivery time for the first parcel in response to completed delivery ofthe first parcel, wherein generating the updated cross-carrier deliveryprediction model is further based on the actual delivery time and theparcel features; and determining a second delivery estimate for thesecond parcel based on the updated cross-carrier delivery predictionmodel.
 4. The method of claim 1, further comprising: receiving a webhookendpoint address from a first user; and associating the webhook endpointaddress with a user identifier identifying the first user, whereinautomatically pushing the first event occurrence comprises automaticallypushing the first event occurrence to the webhook endpoint address forprocessing by the first application.
 5. The method of Claim 4, furthercomprising: determining a second delivery estimate for the first parcelbased on processing updated parcel features for the first parcel withthe first cross-carrier delivery prediction model; and automaticallypushing a second event occurrence to the webhook endpoint address inresponse to the second delivery estimate differing from the firstdelivery estimate beyond a delivery estimate threshold.
 6. The method ofclaim 1, further comprising establishing a webhook endpoint UniformResource Locator (URL) for receiving communication from the firstcarrier; wherein receiving the first parcel data comprises receiving anHypertext Transfer Protocol (HTTP) POST request at the webhook endpointURL in response to the first carrier updating a delivery statusassociated with the first tracking number.
 7. The method of claim 1,wherein the feature engineering rule is a unit standardization rule,wherein the generating the cross-carrier delivery features comprisesstandardizing historic carrier-provided delivery estimates from the pastdelivery data according to the unit standardization rule, and whereingenerating the features comprises standardizing a carrier-provideddelivery estimate from the first parcel data according to the unitstandardization rule.
 8. The method of claim 1, further comprising:retrieving, from a second carrier of the plurality of carriers, secondparcel data for a second parcel based on a second tracking numberassociated with the second carrier; retrieving a second cross-carrierdelivery prediction model based on the second parcel data, the secondcross-carrier delivery prediction model using different cross-carrierdelivery features than the first cross-carrier delivery predictionmodel; and determining a second delivery estimate for the second parcelbased on the second parcel data and the second cross-carrier deliveryprediction model.
 9. The method of claim 8, wherein retrieving the firstcross-carrier delivery prediction model comprises selecting the firstcross-carrier delivery prediction model from a set of deliveryprediction models based on a first destination address from the firstparcel data, and wherein retrieving the second cross-carrier deliveryprediction model comprises selecting the second cross-carrier deliveryprediction model from the set of delivery prediction models based on asecond destination address from the second parcel data.
 10. The methodof claim 8, wherein retrieving the first parcel data comprises:automatically identifying the first carrier as associated with the firsttracking number based on analyzing the first tracking number; andgenerating a first API request tailored to the first carrier in responseto automatically identifying the first carrier; wherein retrieving thesecond parcel data comprises: automatically identifying the secondcarrier as associated with the second tracking number based on analyzingthe second tracking number; and generating a second API request tailoredto the second carrier in response to automatically identifying thesecond carrier.
 8. method of claim 8, further comprising, in response todetermining the second delivery estimate, automatically pushing a secondevent occurrence to activate a second application associated with thefirst user.
 12. A method for automating delivery of a parcel for a user,the method comprising: at a remote delivery prediction system associatedwith a first party shipping carrier: querying a plurality of third partyshipping carriers for historical delivery data; generating cross-carrierdelivery features based on standardizing the historical delivery dataacross the plurality of third party shipping carriers; generating adelivery prediction model based on the cross-carrier delivery features;generating parcel features for the parcel based on parcel data receivedfrom the user; generating service level features for service levelsprovided by the first party shipping carrier for shipping the parcel;determining a plurality of delivery estimates for the service levelsbased on processing the delivery prediction model with the parcelfeatures and the service level features; and delivering the parcelaccording to a service level selected from the service levels based onthe plurality of delivery estimates.
 13. The method of claim 12, whereinthe service level is a drone delivery service, and wherein the methodfurther comprises: generating, at the remote delivery prediction system,control instructions for a delivery drone in response to selection ofthe drone delivery service from the service levels, wherein deliveringthe parcel comprises controlling the delivery drone to deliver theparcel based on the control instructions.
 14. The method of claim 13,wherein the historical delivery data comprises drone delivery data forhistorical completed drone deliveries completed by the plurality ofthird party shipping carriers, wherein the cross-carrier deliveryfeatures comprise drone delivery features generated based on combiningthe drone delivery data, and wherein generating the delivery predictionmodel is based on the drone delivery features.
 15. The method of claim12, further comprising: re-querying the plurality of third partyshipping carriers for updated delivery data; determining an updateddelivery estimate for the service level based on the updated deliverydata; and rerouting delivery of the parcel based on the updated deliveryestimate.
 16. A method for estimating delivery for a first parcelassociated with a first user, the method comprising: querying aplurality of shipping carriers for past delivery data; generatingcross-carrier delivery features based on standardizing the past deliverydata across the plurality of carriers; generating a cross-carrierdelivery prediction model based on the cross-carrier delivery features;retrieving first parcel data for the first parcel based on a trackingnumber; generating first parcel features for the first parcel based onthe first parcel data; and determining a first delivery estimate for thefirst parcel based on processing the first parcel features with thecross-carrier delivery prediction model.
 17. The method of claim 16,wherein the tracking number is a first non-unique tracking numberprovided by a first shipping carrier of the plurality of shippingcarrier, wherein the method further comprises: in response to generatingthe first parcel features, automatically generating a first tracker datastructure comprising a first unique tracker identifier and the firstparcel features, wherein determining the first delivery estimatecomprises retrieving the first parcel features from the first trackerdata structure.
 17. method of claim 17, further comprising: retrievingupdated parcel data for the first parcel based on the first non-uniquetracking number; generating updated parcel features for the first parcelbased on the updated parcel data; updating the first tracker datastructure with the updated parcel features; and determining a seconddelivery estimate for the first parcel based on processing the firstparcel features and the updated parcel features with the cross-carrierdelivery prediction model, wherein determining the second deliveryestimate comprises retrieving the first parcel features and the updatedparcel features from the first tracker data structure.
 19. The method ofclaim 18, further comprising: receiving a second non-unique trackingnumber provided by the first shipping carrier for a second parcelassociated with a second user; and batching the first and the second nonunique-tracking numbers into a parcel data API request tailored to thefirst shipping carrier, wherein retrieving the updated parcel datacomprises retrieving the updated parcel data through the parcel data APIrequest.
 20. The method of claim 17, further comprising: retrievingsecond parcel data for a second parcel based on a second non-uniquetracking number provided by a second shipping carrier of the pluralityshipping carriers; generating a second tracker data structure comprisinga second unique identifier and second parcel features generated based onthe second parcel data; and in response to receiving a request from theuser for tracking data associated with the first and the second parcels,retrieving the first and the second tracker data structures based on thefirst unique identifier and the second unique identifier.